package configuracao;

import hibernate.dao.HibernateConnection;

import java.awt.EventQueue;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;

import skin.LookAndFeelSelector;
import utilitarios.JPanelPersonalizavel;

import java.awt.Font;

public class FrmEspecialidade extends JFrame {

	private JPanel contentPane;
	private JLabel lblEspecialidade;
	private JComboBox cbEspecialidade;
	private JButton btnEscolher;
	private JToolBar tbarBotoes;
	private JButton btnAdiciona;
	private JButton btnAltera;
	private JButton btnRemove;
	private JPanel panelAlteravel;
	private JLabel lblNomeEspecialidade;
	private JLabel lblFuno;
	private JTextField txtEspecialidade;
	private JTextArea txtFuncao;
	private JButton btnSalvar;
	private JButton btnLimpar;
	private CtrlEspecialidade ctrl = new CtrlEspecialidade();
	private int validaFuncao;
	private IRetornaEspecialidade retorno;	

	public FrmEspecialidade() {
		
		setTitle("Especialidade");
		setIconImage(Toolkit.getDefaultToolkit().getImage(FrmEspecialidade.class.getResource("/Repositorio/icon.png")));
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 618, 380);
		setLocationRelativeTo(null);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		lblEspecialidade = new JLabel("Especialidade: ");
		lblEspecialidade.setFont(new Font("Arial", Font.PLAIN, 18));
		lblEspecialidade.setBounds(15, 20, 136, 22);
		contentPane.add(lblEspecialidade);

		btnEscolher = new JButton("Escolher");
		btnEscolher.setBounds(499, 18, 90, 28);
		contentPane.add(btnEscolher);
		btnEscolher.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				retorno.retornaEspecialidade(ctrl.retornaEspecialidade(cbEspecialidade));
				setVisible(false);
			}
		});

		tbarBotoes = new JToolBar();
		tbarBotoes.setFloatable(false);
		tbarBotoes.setBounds(12, 59, 577, 35);
		contentPane.add(tbarBotoes);

		btnAdiciona = new JButton("");
		btnAdiciona.setToolTipText("Adicionar nova Especialidade");
		btnAdiciona
				.setIcon(new ImageIcon(FrmEspecialidade.class.getResource("/Repositorio/bar_btn_add.png")));
		tbarBotoes.add(btnAdiciona);
		btnAdiciona.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				add();

			}
		});

		btnAltera = new JButton("");
		btnAltera.setToolTipText("Alterar especialidade");
		btnAltera
				.setIcon(new ImageIcon(FrmEspecialidade.class.getResource("/Repositorio/bar_btn_alt.png")));
		tbarBotoes.add(btnAltera);
		btnAltera.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				alt();

			}
		});

		btnRemove = new JButton("");
		btnRemove.setToolTipText("Remover especialidade");
		btnRemove
				.setIcon(new ImageIcon(FrmEspecialidade.class.getResource("/Repositorio/bar_btn_remove.png")));
		tbarBotoes.add(btnRemove);
		btnRemove.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				delete();
				clean();
			}
		});

		panelAlteravel = new JPanelPersonalizavel("src/Repositorio/wave.png");
		panelAlteravel.setBorder(new TitledBorder(null, "",
				TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panelAlteravel.setBounds(0, 114, 601, 229);
		contentPane.add(panelAlteravel);
		panelAlteravel.setLayout(null);
		panelAlteravel.setEnabled(false);

		lblNomeEspecialidade = new JLabel("Especialidade: ");
		lblNomeEspecialidade.setFont(new Font("Arial", Font.PLAIN, 18));
		lblNomeEspecialidade.setEnabled(false);
		lblNomeEspecialidade.setBounds(25, 13, 138, 28);
		panelAlteravel.add(lblNomeEspecialidade);
		lblNomeEspecialidade.setEnabled(false);

		txtEspecialidade = new JTextField();
		txtEspecialidade.setBounds(175, 14, 373, 28);
		panelAlteravel.add(txtEspecialidade);
		txtEspecialidade.setColumns(10);
		txtEspecialidade.setEnabled(false);

		lblFuno = new JLabel("Fun\u00E7\u00E3o: ");
		lblFuno.setFont(new Font("Arial", Font.PLAIN, 18));
		lblFuno.setBounds(25, 54, 138, 28);
		panelAlteravel.add(lblFuno);
		lblFuno.setEnabled(false);

		txtFuncao = new JTextArea();
		txtFuncao.setBounds(175, 54, 373, 81);
		panelAlteravel.add(txtFuncao);
		txtFuncao.setEnabled(false);

		btnSalvar = new JButton("Salvar");
		btnSalvar.setBounds(134, 162, 143, 47);
		panelAlteravel.add(btnSalvar);
		btnSalvar.setEnabled(false);
		btnSalvar.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				if (validaFuncao == 0) {
					ctrl.adicionarEspecialidade(txtEspecialidade, txtFuncao);
					cbEspecialidade.removeAllItems();
					ctrl.preencherComboBox(cbEspecialidade);
					
				} else {
					ctrl.alteraEspecialidade(cbEspecialidade, txtEspecialidade,
							txtFuncao);
					cbEspecialidade.removeAllItems();
					ctrl.preencherComboBox(cbEspecialidade);
				}

				disableCampos();
			}
		});

		btnLimpar = new JButton("Limpar");
		btnLimpar.setBounds(368, 162, 138, 47);
		panelAlteravel.add(btnLimpar);
		btnLimpar.setEnabled(false);
		btnLimpar.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				clean();

			}
		});

		cbEspecialidade = new JComboBox();
		cbEspecialidade.setBounds(163, 18, 296, 28);
		contentPane.add(cbEspecialidade);
		ctrl.preencherComboBox(cbEspecialidade);
		cbEspecialidade.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				if(cbEspecialidade.getItemCount() >0){
					load();
				}
				
			}
		});

		this.addWindowListener(new WindowAdapter() {

			public void windowOpened(WindowEvent e) {
				load();
				disableCampos();
			}
		});

	}
	
	

	public void load() {
		ctrl.carregaCampos(txtEspecialidade, txtFuncao, cbEspecialidade);
	}

	public void enableCampos() {
		panelAlteravel.setEnabled(true);
		lblNomeEspecialidade.setEnabled(true);
		txtEspecialidade.setEnabled(true);
		lblFuno.setEnabled(true);
		txtFuncao.setEnabled(true);
		btnSalvar.setEnabled(true);
		btnLimpar.setEnabled(true);
	}

	public void disableCampos() {
		panelAlteravel.setEnabled(false);
		lblNomeEspecialidade.setEnabled(false);
		txtEspecialidade.setEnabled(false);
		lblFuno.setEnabled(false);
		txtFuncao.setEnabled(false);
		btnSalvar.setEnabled(false);
		btnLimpar.setEnabled(false);
	}

	public void add() {
		clean();
		enableCampos();
		validaFuncao = 0;

	}

	public void alt() {

		enableCampos();
		validaFuncao = 1;
	}

	public void delete() {
		ctrl.removerEspecialidade(cbEspecialidade);
		cbEspecialidade.removeAllItems();
		ctrl.preencherComboBox(cbEspecialidade);
		load();
	}

	public void clean() {
		txtEspecialidade.setText("");
		txtFuncao.setText("");
	}
	
	public void setRetorno(IRetornaEspecialidade listener){
		retorno = listener;
	}

}
